package com.ccc.scala.base8_match

object Match03 {
  def main(args: Array[String]): Unit = {
    // 匹配类型 类型前面加变量名，这个变量就是将数据转换成指定类型的变量
    def describe(x: Any) = x match {
      case i: Int => "Int"
      case s: String => "String"
      case m: List[Int] => "List"
      case c: Array[Int] => "Array[Int]"
      case someThing => "something else " + someThing
    }

    println(describe(24)) // Int
    println(describe("CJ")) // String

    println(describe(List(1, 3, 5, 2, 4))) // List
    // Scala中的泛型是不考虑泛型的
    println(describe(List("1", "2", "3"))) // List

    // Array不同，这里的Array并不是真正的泛型，底层实际上还是数组
    println(describe(Array("1", "2", "3"))) // something else [Ljava.lang.String;@45c8e616

    println(describe(Array(3, 5, 8, 9))) // Array[Int]
    println(describe(114.514)) // something else 114.514

  }

}
